home *** CD-ROM | disk | FTP | other *** search
/ Light ROM 1 / LIGHT-ROM 1 (Amiga Library Services)(1994).iso / ffdisks / d880.lha / Oberon / O3Demo2.lzh / Definitions / Lists.def < prev    next >
Text File  |  1993-01-15  |  1KB  |  45 lines

  1. DEFINITION Lists;
  2.  
  3. IMPORT
  4.   BT := BasicTypes;
  5.  
  6. TYPE
  7.   NodePtr = POINTER TO Node;
  8.   Node = RECORD (BT.ANYDesc) 
  9.     next : NodePtr;
  10.     prev : NodePtr;
  11.   END;
  12.   ListPtr = POINTER TO List;
  13.   List = RECORD (BT.COLLECTIONDesc) 
  14.     head : NodePtr;
  15.     tail : NodePtr;
  16.     PROCEDURE (list:ListPtr) Add(x: BT.ANY);
  17.     PROCEDURE (list:ListPtr) Remove(x: BT.ANY);
  18.     PROCEDURE (list:ListPtr) nbElements(): LONGINT;
  19.     PROCEDURE (list:ListPtr) isEmpty(): BOOLEAN;
  20.     PROCEDURE (list:ListPtr) Do(p: BT.DoProc; par: BT.ANY);
  21.   END;
  22.   DoProc = PROCEDURE(n: NodePtr);
  23.  
  24. PROCEDURE Init(VAR list: List);
  25. PROCEDURE AddHead(VAR list: List; n: NodePtr);
  26. PROCEDURE AddTail(VAR list: List; n: NodePtr);
  27. PROCEDURE Remove(VAR list: List; n: NodePtr);
  28. PROCEDURE RemHead(VAR list: List): NodePtr;
  29. PROCEDURE RemTail(VAR list: List): NodePtr;
  30. PROCEDURE AddBefore(VAR list: List; n, x: NodePtr);
  31. PROCEDURE AddBehind(VAR list: List; n, x: NodePtr);
  32. PROCEDURE Empty(VAR list: List): BOOLEAN;
  33. PROCEDURE CountElements(VAR list: List): LONGINT;
  34. PROCEDURE DoForward(VAR list: List; proc: DoProc);
  35. PROCEDURE DoBackward(VAR list: List; proc: DoProc);
  36. PROCEDURE Next(VAR n: NodePtr): BOOLEAN;
  37. PROCEDURE Previous(VAR n: NodePtr): BOOLEAN;
  38. PROCEDURE Succ(VAR n: NodePtr);
  39. PROCEDURE Pred(VAR n: NodePtr);
  40. PROCEDURE Head(VAR list: List): NodePtr;
  41. PROCEDURE Tail(VAR list: List): NodePtr;
  42.  
  43. END Lists.
  44.  
  45.